iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 6
1
自我挑戰組

寇丁人妻的前端書蟲日誌系列 第 6

Day06:圖解 HTTP Chapter01 了解 Web 及網路基礎 筆記精要

  • 分享至 

  • xImage
  •  

使用 HTTP 協議訪問 Web

當在網頁瀏覽器輸入網址之後,瀏覽器會向伺服器請求該網址的資源,並顯示網頁。發送請求取得伺服器資料的網頁瀏覽器,都可以稱為客戶端。

網頁是透過 HTTP 協議完成傳送資料的流程。

HTTP 的誕生

  • HTTP / 1.0:初期標準,現在仍然被廣泛使用。
  • HTTP / 1.1:目前主流的 HTTP 協議版本,主要是要解決文字傳輸的困難。

TCP / IP

目前所使用的網路都是在 TCP / IP 協議的基礎上運作,而 HTTP 是屬於內部的一個子集。

TCP / IP 協議

什麼是協議:電腦與網路要互相連接,必須要在連接前確定一些規則才能達成,像是使用哪種語言、如何偵測連結、如何結束等等,而這些規則就稱為協議。

TCP / IP 就是跟網路連接有關的所有協議的統稱。

有人認為 TCP / IP 是在說 TCP 協議與 IP 協議,也有人認為 TCP / IP 是在 IP 協議的連結過程中,所使用到的協議統稱。

TCP / IP 分層管理

TCP / IP 分為四層:

  • 應用層:提供為應用軟體而設的埠,以設定與另一應用軟體之間的通訊。例如:HTTP、FTP、DNS等等
  • 傳輸層:提供兩台有網路連接的電腦之間的資料傳輸。當中有 TCP 和 UDP。
  • 網路層:定義網路路由和地址,讓資料可以在網路之間傳遞,資料在傳輸時,協議會把 IP 地址加到傳輸資料內組成封包,又稱「IP層」。
  • 資料連結層:處理網路連接硬體的部分(MAC 地址也處於這層)。

TCP / IP 通訊傳輸流

兩台電腦在進行網路連接時,會通過分層的順序連接。發送端會從應用層逐步走到資料連結層,而接收端會從資料連結層向回走到應用層。

發送端在各層傳輸資料時,經過一層就會在該層增加一個 header 資料,接收端接受後每經過一層,就會消除一層,這樣分層的好處是當協議需要改變時,只要將有變動的那層替換就可以了。

與 HTTP 關係密切的協議:IP、TCP 和 DNS

負責傳輸的 IP 協議

有些人會把 IP 跟 IP 位址搞錯。

IP 協議的作用是把封包傳送給對方,這需要很多條件,其中重要的兩個條件是 IP 位置和 MAC 。

IP 位置是指節點被分配到的位置,而 MAC 是指網卡上獨特的序號,IP 位置可以跟 MAC 配對,IP 是不固定的,而 MAC 是網卡獨特的序號,是不會改變的。

IP 之間的連接是依賴 MAC 。

網路上兩台電腦的連接通常是藉由多台電腦和網路設備轉接,才連接到對方,而在連接時會利用下一站轉接設備的 MAC 來找到這個轉接的目標,這時候會使用 ARP 協議,ARP 協議是一種解析位置的協議,他會根據連接那端的 IP 位置來反查對應的 MAC。

在到達最後要連結到的目標之前,這中間過程的轉運站,通常叫做路由。

確保可靠性的 TCP 協議

為了方便管理,TCP 的功能是把資料流分割成適當長度的報文段,並且確認是否有把資料成功傳給對方。

TCP 協議採用了三向交握(three-way handshaking)策略,意思就是三次訊息的交換,當中會使用 TCP 的註記標誌——SYN、ACK。發送端會先送一個帶有 SYN 標記的封包給對方,接收端收到之後會發送一個帶有 SYN、ACK 標記的封包回去,最後發送端再送一個帶有 ACK 標記的封包,這樣表示訊息傳送完成。

負責域名解析的 DNS 服務

DNS 跟 HTTP 一樣在應用層,提供了域名到 IP 之間的解析服務。電腦既然可以有 IP 位置,也可以有主機名稱和域名。例如:www.codingwife.com。

一般人在訪問別人的主機通常都是用域名,而不是 IP 位置,因為 IP 比較不符合一般人能記憶的模式。DNS 協議提供通過域名來查找 IP 位置,或是反向從 IP 位置來找域名。

各協議與 HTTP 協議的關係

  • 客戶端:訪問 www.codingwife.com
    • DNS:查找對應的 IP 位置
  • 發送到伺服器端
    • HTTP:生對目標伺服器的 HTTP 請求報文
    • TCP:把報文分割成封包,確認每個封包都傳送給對方
    • IP:查找對方的位置,一邊轉運、一邊傳送。(路由器)
    • TCP:從對方那裡接收到封包並重組。
    • HTTP:對請求的內容進行處理。

請求的處理結果也是透過 TCP / IP 通訊協定回傳。

URI 與 URL

URI(Uniform Resource Identifier)統一資源標識符。

https://codingwife.com/2018/10/16/2018ithome/day01/為例:

https://:協議名稱,Identifier 來表示定位標示符。
codingwife.com:域名。
/2018/10/16/2018ithome/day01/:路徑。

資料來源:《圖解 HTTP》 上野宣 人民郵電出版社
筆記純屬推廣及分享,如有侵權,請告知。
Please advise to remove immediately if any infringement caused.


上一篇
Day05:JavaScript 設計模式 心得
下一篇
Day07:YDKJS 第三次讀書會
系列文
寇丁人妻的前端書蟲日誌30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言